Test automation software may be developed for effective software testing, whereby repetitive tasks may be automated in a formalized testing process and other tasks, which may be difficult to do manually, may be performed. A test automation framework may be an integrated system that sets the rules and combines approaches for automation of a particular software product or products in an effort to simplify automation testing. For example, a test automation framework may integrate function libraries, test data sources, object details and/or various reusable modules and other building blocks which form a process (i.e., a process is an instance of a computer program being executed and may be made up of multiple threads of execution that execute instructions concurrently). A test automation framework may provide the basis of test automation, and may reduce the cost of testing and maintenance. For example, if there is change to any test case then only the test case file may be updated and the driver script and startup script may remain the same.
A growing trend in software development is the use of testing frameworks that allow the execution of unit tests, wherein individual units of the software or sections of the code are tested separately using appropriate test cases to verify that each unit performs as expected. A unit of software may be considered the smallest testable part of software, and may have one or more inputs and one or more expected outputs. For example, a unit of software may be, but is not limited to the following: a program; a function; a method; a class; an application module; and/or procedure. Unit testing may be particularly efficient and effective when a piece of code is being modified or changed, because it permits the testing and removal of defects in the modified code prior to introducing it into the integrated software system. A limitation of existing unit testing frameworks is that input and output signals are manually generated, which is generally a costly and time-consuming task that is unable to properly record the complexity of all possible events.
Another software testing framework technique is regression testing, which verifies that software that was previously developed and tested still performs correctly when the software is modified or interfaced with other software. Examples of software changes include, but are not limited to: software enhancements; software upgrades; software patches; and/or configuration changes. During regression testing, new software bugs or regressions may be uncovered, and may thus be corrected before releasing a new version of the software. Regression testing may be performed to test a system efficiently by systematically selecting the appropriate minimum set of tests needed to adequately cover a particular change and may involve rerunning previously completed tests and checking whether program behavior has changed and whether previously fixed faults have re-emerged.
Software testing may employ record and replay (i.e., record and playback) techniques that allow users to interactively record user actions and replay them back any number of times during testing. For example, record and replay testing may be an effective tool during regression testing to verify that any changes made to any portion (e.g., unit) of software results in the desired outcome. Record and replay testing may work with any type of software application with an output interface, such that the actual results generated during testing may be compared with the expected results to detect errors or bugs.